public PartBuilder part(String name, Object part, @JavaAnnotationCall(Nullable,) MediaType contentType)
{ Assert.hasLength(name, "'name' must not be empty"); Assert.notNull(part, "'part' must not be null"); if (part instanceof Part) { PartBuilder builder = asyncPart(name, ((Part)part).content(), DataBuffer.class); if (contentType != null) { builder.contentType(contentType); } if (part instanceof FilePart) { builder.filename(((FilePart)part).filename()); } return builder; } if (part instanceof PublisherEntity<?, ?>) { PublisherPartBuilder<?, ?> builder = new PublisherPartBuilder<>(name, (PublisherEntity<?, ?>)part); if (contentType != null) { builder.contentType(contentType); } this.parts.add(name, builder); return builder; } Object partBody; HttpHeaders partHeaders = null; if (part instanceof HttpEntity) { partBody = ((HttpEntity<?>)part).getBody(); partHeaders = new HttpHeaders(); partHeaders.putAll(((HttpEntity<?>)part).getHeaders()); } else { partBody = part; } if (partBody instanceof Publisher) { throw new IllegalArgumentException("Use asyncPart(String, Publisher, Class)" + " or asyncPart(String, Publisher, ParameterizedTypeReference) or" + " or MultipartBodyBuilder.PublisherEntity"); } DefaultPartBuilder builder = new DefaultPartBuilder(name, partHeaders, partBody); if (contentType != null) { builder.contentType(contentType); } this.parts.add(name, builder); return builder; }